#ifndef T_PLAYER_H
#define T_PLAYER_H

#include "T_BasePage.h"
#include "player.h"
#include "whisper_processor.h"
#include "T_KeyFrameTableViewModel.h" //添加关键帧模型
#include <ElaTableView.h>
#include <QModelIndex>  // 为了使用 QModelIndex
#include <QList>
#include <QFuture>
#include <QPushButton>
#include <QFutureWatcher>
#include <QtConcurrent>    // <- 引入 QtConcurrent API
#include<QVector>
#include "T_PlayerCaptionModel.h"


class ElaListView;
class T_Player : public T_BasePage
{
    Q_OBJECT
public:
    Q_INVOKABLE explicit T_Player(QWidget* parent = nullptr);
    ~T_Player();
    
private slots:
    void onKeyFrameClicked(const QModelIndex& index);// 当关键帧列表（表格视图）中的某一行被点击时调用
    void onCaptionClicked(const QModelIndex &index);// 当字幕列表（表格视图）中的某一行被点击时调用
    void onExtractSubtitlesClicked();  // 处理字幕提取的槽函数
    void onSubtitlesReady(const QList<SegmentResult>& segments);  // 处理字幕数据
    
    // 关键帧新增线程：后台完成后回调
    void onKeyFramesReady();

private:
    Player* _player{nullptr};
    QString m_currentVideoPath;  // 新增：当前视频文件路径
    Whisper* whisper{ nullptr };  // 新增 Whisper 句柄
    ElaTableView* _playerSubtitleView{ nullptr };  // 存放字幕的表格
    T_PlayerCaptionModel* m_captionModel;  // 字幕模型
    ElaTableView* _tableView{ nullptr };       //存放关键帧表格
    QPushButton* btnExtractKeyFrame{ nullptr };
    QPushButton* btnExtractSubtitles{nullptr};

    // 新增关键帧新增线程     
    QFutureWatcher<QVector<T_KeyFrameTableViewModel::KeyFrameItem>> m_kfWatcher;    // 用来监视后台任务

};

#endif// T_PLAYER_H
